package com.eco
{
	import flash.display.Sprite;
	import flash.events.EventDispatcher;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	
	//创建道具指令类，用于记录创建道具的信息，并根据信息发出创建道具的事件
	public class CreateBonusCMD extends Sprite
	{
		private var timer:Timer;//计时器，用于触发创建事件
		private var typeList:Vector.<int>;//创建道具的类型列表，是实际生成的道具类型的选择范围
		
		public function CreateBonusCMD(time:int, list:Array )  
		{
			//建立一个新的创建指令，设定建立道具的间隔周期，类型列表
			//类型列表中非负的整数代表道具编号，-1代表不创建道具，通过输入不同数量的数值，
			//可以调节道具创建与否的概率和道具种类的概率
			timer = new Timer( time, 0 );//每个time时间触发一次，一直循环触发
			typeList = new Vector.<int>;
			var i:int = 0;
			for( i=0; i<list.length; i++)
			{
				typeList.push( list[i] );
			}
			timer.addEventListener(TimerEvent.TIMER, DispatchCreateCMD );
			timer.start();
		}
		
		private function DispatchCreateCMD(e:TimerEvent ):void
		{
			var bonusType:int = typeList[ Math.floor( Math.random()*typeList.length) ];
			//从列表中随机抽取一项作为生成的类型
			//random产生0<=x<1的x，x*typeList.length的结果是0<=y<typeList.length的y
			//floor向下取整的结果z满足0<=z<=(typeList.length-1)
			
			if( bonusType == -1 )//如果随机到的项为-1，表示不产生道具
				return;
			
			//如果不是-1，那么产生对应数字所代表的道具
			var evt:CreateObjectEvent = new CreateObjectEvent(CreateObjectEvent.CREATE_BONUS);//新建创建道具事件
			evt.objectType = bonusType;//赋予道具的类型
			evt.posX = Math.floor( Math.random()*450 + 50 );//随机的坐标
			evt.posY = Math.floor( Math.random()*300 + 50 );
			dispatchEvent(evt);//把事件添加到调度流中
		}
		
		public function Pause():void
		{
			timer.stop();
		}
		
		public function Continue():void
		{
			timer.start();
		}
		
		
		
	}
}